package com.lcredu.common.valid;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;
import java.util.Set;

/**
 * @author kirito
 * @create 2023-10-07 2:44
 * 1. EnumConstraintValidator是真正的校验器,即校验的逻辑是集合在此
 * 2. EnumConstraintValidator需要实现一个接口ConstraintValidator
 * 3. <EnumValidate,Integer> 表示该校验器是针对@EnumValidate传入的integer类型进行校验
 */
public class EnumConstraintValidator implements ConstraintValidator<EnumValidate, Integer> {
    //定义一个set集合,用于收集EnumValidate传入的values
    private Set<Integer> set = new HashSet<>();
    //先拿到正则表达式
//    private String regexp = " ";

    @Override
    public void initialize(EnumValidate constraintAnnotation) {
        //这里我们测试一下是否能够得到传入进来的value
        //通过注解进行获取(反射)
        int[] values = constraintAnnotation.values();
        for (int value : values) {
//            System.out.println("EnumValidate注解指定的values==" + value);
            set.add(value);
        }
//        regexp = constraintAnnotation.regexp();
    }

    //true成功,false失败
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) {
//        System.out.println("表单传入的的values=" + value);
        return set.contains(value);
//        return value.toString().matches(regexp);
    }
}
